#pragma once

class BitUtility {
public:
    static unsigned int alignGreaterEqual(unsigned int v, unsigned int base); 
    static unsigned int bitWidth(unsigned int value);
};

class Bit {
public:
    Bit(unsigned int bindex); 
    unsigned int bindex();
    unsigned long long value();
    unsigned long long mask();
    unsigned long long clear(unsigned long long v);
    unsigned long long set(unsigned long long v);
    bool isSet(unsigned long long v);
    bool isClear(unsigned long long v);
    
private:
    unsigned int _bindex;
};

